#define _CRT_SECURE_NO_WARNINGS 1

//函数的 声明 和 定义


//函数定义放在主函数后面面，因为代码从上往下扫描，所以跑不起来
//需要声明一下 
//函数的 调用 和 声明
//最多用于调用其他  .c 文件的函数或者  .h 文件
#include<stdio.h>
#include"add.h"  //自己做的头文件有用双引号  

int add(int,int);//int add(int x,int y);
int main()
{
	int a = 10;
	int b = 20;
	int sum = add(a, b);
	printf("%d\n",sum);
	return 0;
}
          //int add(int x, int y)//函数定义
          //{
          //	int z = x + y;
          //	return z;
          //}

//函数的 嵌套调用 和 链式访问

//函数的 嵌套调用 

//#include<stdio.h>
//void new_line()
//{
//	printf("hehe\n");
//}
//void three_line()
//{
//	int i = 0;
//	for (i = 0; i < 3; i++)
//	{
//		new_line();
//	}
//}
//int main()
//{
//	three_line();
//	return 0;
//}



//函数的 链式访问

//#include<stdio.h>
//#include<string.h>
//int main()
//{
//	//1
//	int len = 0;
//	len = strlen("abc");
//	printf("%d\n",len);
//	//2
//	printf("%d\n",strlen("abc"));//链式访问
//	return 0;
//}


//#include<stdio.h>
//int main()
//{
//	printf("%d",printf("%d",printf("%d",43)));//输出为 4321
	//printf返回值是字符串个数
	//printf("%d",43) 屏幕上打印了2个字符43，这时屏幕显示43，而printf("%d",43)的返回值为2，
	///即printf("d",printf("%d",2));
	// printf("%d",2)在屏幕上打印了1个字符2，这时屏幕显示432，而printf("%d",2)的返回值为1；
	//即printf("%d",1);在屏幕上打印了1个字符1，这时屏幕显示4321
//	return 0;
//}

//void add(int* p)
//{
//	(*p)++;// ++ 优先级高于*，所以要打括号
//}
//int main()
//{
//	int num = 0;
//	add(&num);
//	printf("%d\n",num);
//	add(&num);
//	printf("%d\n", num);
//	add(&num);
//	printf("%d\n", num);
//	return 0;
//}

//二分查找

//#include<stdio.h>

                 //本质上 arr 是一个指针 
//1 int binary_search(int arr[], int k,int sz)
//2 int binary_search(int arr[], int k,int length，int right)
//{
	/*int sz = sizeof(arr) / sizeof(arr[0])*/;//数组传参不能再用这个方式器
	//方法：放到主函数里先算好
//1	
//   int left = 0;
//	int right = sz - 1;

//2 上式子可以省略

//	while (left <= right)
//	{
//		int mid = (left + right) / 2;
//		if (k > arr[mid])
//		{
//			left = mid + 1;
//		}
//		else if (k < arr[mid])
//		{
//			right = mid - 1;
//		}
//		else
//		{
//			return mid;
//		}
//	}
//	return -1;
//}
//int main()
//{
//	int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
//	int k = 7;
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	int ret = binary_search(arr, k,sz);//int ret = binary_search(arr, k,5,9);
	//  数组名是数组首地址  传递是 arr 首元素的地址
//	if (-1 == ret)
//	{
//		printf("没找到\n");
//	}
//	else
//	{
//		printf("找到了，下标是：%d\n", ret);
//	}
//	return 0;
//}


//打印1000~2000年中的闰年

//#include<stdio.h>

//int is_leap_year(int x)
//{
//	return ((0 == x % 4) && (0 != x % 100) || (0 == x % 400))
//}
//int main()
//{
//	int year = 0;
//	for (year = 1004; year <= 2000; year+=4)
//	{
//		if (is_leap_year(year) == 1)
//			printf("%d ",year);
//	}
//	return 0;
//}


//输出100 至 200 中的素数

//#include<stdio.h>
//#include<math.h>

//int is_prime_number(int n)
//{
//	int z = 0;
//	for (z = 2; z <= sqrt(n); z++)
//	{
//		if (0 == n % z)
//		return 0;
//	}
//		return 1;
//}
//int main()
//{
//	int i = 0;
//	for (i = 101; i <= 200; i+=2)
//	{
//		if(is_prime_number(i) == 1)
//		printf("%d ",i);
//	}
//	return 0;
//}


// 自定义函数

//#include<stdio.h>

//void swap1(int x, int y)//形式参数，当函数调用完之后，就会自动销毁
//{                                 //与局部变量相似
//	int tmp = 0;
//	tmp = x;
//	x= y;
//	y = tmp;
//}
//当实参转给形参的时候，形参是实参的一份拷贝，对形参的改变是不会改变实参的

//void swap2(int* pa,int* pb)//形式参数当函数调用完之后，就会自动销毁
//{
//	int tmp = *pa;
//	*pa = *pb;
//	*pb = tmp;
//}
//int main()
//{
//	int a = 10;
	              //int* pa = &a;//pa 指针变量
	              //*pa = 20 ; //解引用操作
	//int b = 20;
	             /*int*pb = &b;*/
	             /**pb = 10;*/

	//在使用swap函数，就是调用函数，
	//调用函数分为，传值调用，传址调用

 /*	swap1(a,b);*/  //无法交换a与的b的值，只是交换自定义函数中x与y的值
	//传值调用  不会改变实参的值

	//swap2(&a,&b);//&a  &b 是真实传给自定义函数，所以实际参数。a.b也是真实转给自定义函数，所以也是实际参数
  //传址调用    会改变实参的值
//
//	printf("a=%d b=%d\n",a,b);
//	return 0;
//}


//#include<stdio.h>

//int max(int x, int y)
//{
//	if (x > y)
//		return x;
//	else
//		return y;
//}
//int main()
//{
//	int a = 10;
//	int b = 20;
//	int ret = max(a,b);
//	printf("max = %d\n",ret);
//	return 0;
//}

//#include<stdio.h>
//#include<string.h>

//int main()
//{
//	//memset 内存操作函数 memory(n.内存) -set（设置）
//	char arr[] = "hello world";
//	memset(arr, '*', 5);
//	printf("%s\n",arr);
//
//	//strlen - string-length字符串长度
//
//	//strcpy- string - copy - 字符串拷贝
//	//char arr1[] = "bit";
//	//char arr2[20] = "########";
//	//strcpy(arr2, arr1);
//	//printf("%s\n",arr2);
//	//return 0; 
//}